// package org.ylc.note.security.config;
//
// import com.fasterxml.jackson.annotation.JsonAutoDetect;
// import com.fasterxml.jackson.annotation.PropertyAccessor;
// import com.fasterxml.jackson.databind.ObjectMapper;
// import org.springframework.context.annotation.Bean;
// import org.springframework.context.annotation.Configuration;
// import org.springframework.data.redis.connection.RedisConnectionFactory;
// import org.springframework.data.redis.core.RedisTemplate;
// import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
// import org.springframework.data.redis.serializer.RedisSerializer;
// import org.springframework.data.redis.serializer.StringRedisSerializer;
//
// /**
//  * 代码千万行，注释第一行，
//  * 注释不规范，同事泪两行。
//  *
//  * @author YuLc
//  * @version 1.0.0
//  * @date 2020/6/2
//  */
// @Configuration
// public class RedisConfig {
//
//     @Bean
//     public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
//         RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
//         redisTemplate.setConnectionFactory(connectionFactory);
//
//         // 使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值（默认使用JDK的序列化方式）
//         Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
//         ObjectMapper objectMapper = new ObjectMapper();
//         objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
//         objectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(), ObjectMapper.DefaultTyping.NON_FINAL);
//         jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
//
//         // 使用StringRedisSerializer来序列化和反序列化redis的key值
//         RedisSerializer<String> redisSerializer = new StringRedisSerializer();
//         // key
//         redisTemplate.setKeySerializer(redisSerializer);
//         redisTemplate.setHashKeySerializer(redisSerializer);
//         // value
//         redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
//         redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
//
//         redisTemplate.afterPropertiesSet();
//         return redisTemplate;
//     }
//
// }
